const envirment = process.env.NODE_ENV;
const is_production =  process.env.NODE_ENV == 'bformal' || process.env.NODE_ENV == 'btest' || process.env.NODE_ENV == 'blocal';
console.log(envirment, '===============================',process.env.VUE_APP_IP,process.env.VUE_APP_URL)
const cdn = {
    css: [
        'https://unpkg.com/element-ui@2.15.8/lib/theme-chalk/index.css',
        'https://unpkg.com/qiaonan@1.0.7/css/style.css'
    ],
    js: [
        'https://cdn.bootcdn.net/ajax/libs/vue/2.7.10/vue.min.js',
        // 'https://cdn.bootcdn.net/ajax/libs/vue/3.2.13/vue.global.min.js',
        'https://cdn.bootcdn.net/ajax/libs/vue-router/3.2.0/vue-router.min.js',
        'https://cdn.bootcdn.net/ajax/libs/vuex/3.2.0/vuex.min.js',
        'https://cdn.bootcdn.net/ajax/libs/axios/0.26.1/axios.min.js',
        'https://unpkg.com/element-ui@2.15.8/lib/index.js',
        // 'https://unpkg.com/qiaonan@1.0.7/index.js', //html已经引入
    ]
}

const externals = {
    // 属性名称 vue, 表示遇到 import xxx from 'vue' 这类引入 'vue'的，不去 node_modules 中找，而是去找全局变量 Vue（其他的为VueRouter、Vuex、axios、ELEMENT、echarts，注意全局变量是一个确定的值，不能修改为其他值，修改为其他大小写或者其他值会报错，若有异议可留言）
    vue: 'Vue',
    'vue-router': 'VueRouter',
    vuex: 'Vuex',
    axios: 'axios',
    'element-ui': 'ELEMENT',
    'qiaonan':"UI"
}

module.exports = {
    publicPath: '/', //公共路径
    productionSourceMap: true,//去除vue打包后js目录下生成的.map文件，用于加速生产环境构建
    lintOnSave:false,
    chainWebpack: config => {
         // 设置title
         config.plugin('html')
         .tap(args => {
             args[0].title = 'chat';
             return args;
         })
     // 生产环境用 cdn、图片打包优化
     if (is_production) {
         // 图片打包优化
         config.module
             .rule('images')
             .use('image-webpack-loader')
             .loader('image-webpack-loader')
             .options({
                 bypassOnDebug: true
             })

         config.plugin('html').tap(args => {
             args[0].cdn = cdn
             return args
         })
         //视为一个外部库，而不将它打包进来
         config.externals(externals)
     } else {
         // 开发环境引入css
         config.plugin('html').tap(args => {
             args[0].cdn = {
                 css: cdn.css,
                //  js:cdn.js
             }
             return args
         })

        //  config.externals(externals)
     }
    },

    configureWebpack: () => {
        return {
            // 分开 第三方js库 打包优化
            // 看这里：把chunk-vendors.js进行分包，提升资源加载速度，很有必要
            optimization: {
                nodeEnv: false, //警告 环境名称冲突
               
                runtimeChunk: 'single',
               
                splitChunks: {
                    chunks: 'all', // 可选值：all，async 和 initial。all功能最强大，所以咱们就使用all
                    maxInitialRequests: Infinity, // 最大并行请求数，为了以防万一，设置无穷大即可
                    minSize: 20000, // 引入的模块大于20kb才做代码分割，官方默认20000，这里不用修改了
                    maxSize: 40000, // 若引入的模块大于60kb，则告诉webpack尝试再进行拆分
                    cacheGroups: {
                        vendors: {
                            test: /[\\/]node_modules[\\/]/, // 使用正则匹配node_modules中引入的模块
                            priority: -10, // 优先级值越大优先级越高，默认-10，不用修改
                            name(module) { // 设定分包以后的文件模块名字，按照包名字替换拼接一下 vue-cli 4.x版本, 5.x版本直接写常量字符串
                                // const packageName = module.context.match(/[\\/]node_modules[\\/](.*?)([\\/]|$)/)
                                return `npm_$`
                            },
                        },
                    },
                }
            }
        }
    },
    runtimeCompiler: true,//运行时Vue.extend template
    devServer: {
        open: false,//启动项目自动打开默认浏览器
        port: 8122,
        proxy: {
            // // 开发环境
            // '/api': {
            //     target: `https://${IP}:8123`,
            //     // target: 'http://43.143.133.115:8123',
            //     changeOrigin: true,
            //     secure: false,
            //     pathRewrite: {
            //         '^/api': ''
            //     }
            // },
            // '/upload': {
            //     target: `https://${IP}:8123`,
            //     // target: 'http://43.143.133.115:8123',
            //     changeOrigin: true,
            //     secure: false,
            //     pathRewrite: {
            //         '^/upload': ''
            //     }
            // },
        },
    },
}
